package com.loooooo.pm2024.modules.pm.model;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.loooooo.pm2024.config.BigIDSerialize;
import com.loooooo.pm2024.data.BaseEntity;
import com.loooooo.pm2024.modules.sys.model.PrettyUser;
import com.loooooo.pm2024.modules.sys.model.User;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

public class Task extends BaseEntity implements Serializable {

    private String subject;
    private String content;
    private Integer no;
    private Integer urgent;
    private Integer standalone;
    private Integer dependent;
    private Long expectedFinishTime;

    private Integer priority;
    private Integer task;
    private Boolean timeout;
    private Long startAt;
    private Long endAt;

    private Integer time;

    @JsonSerialize(using = BigIDSerialize.class)
    private Long ownerId;
    @JsonSerialize(using = BigIDSerialize.class)
    private Long issueId;

    private Integer estimatedTime;

    private Long estimatedStartAt;
    private Long estimatedEndAt;
    private Integer progress;


    private List<TaskLog> logList;

    private Integer hung;
    private Long hungAt;
    @JsonSerialize(using = BigIDSerialize.class)
    private Long hungBy;
    private String hungReason;

    private Integer committed;
    private Long committedAt;
    @JsonSerialize(using = BigIDSerialize.class)
    private Long committedBy;


    private Integer approved;
    private Long approvedAt;
    @JsonSerialize(using = BigIDSerialize.class)
    private Long approvedBy;
    private Integer giveup;
    private Long giveupAt;
    @JsonSerialize(using = BigIDSerialize.class)
    private Long giveupBy;
    private String giveupReason;

    private PrettyUser ownerUser;
    private PrettyUser committedByUser;
    private PrettyUser approvedByUser;

    private Integer toBeDiscussed;

    private Integer dayRemaining;
    private Integer newDayRemaining;

    private Long plannedCompletionTime;


    public PrettyUser getOwnerUser() {
        return ownerUser;
    }

    public void setOwnerUser(PrettyUser ownerUser) {
        this.ownerUser = ownerUser;
    }

    public PrettyUser getCommittedByUser() {
        return committedByUser;
    }

    public void setCommittedByUser(PrettyUser committedByUser) {
        this.committedByUser = committedByUser;
    }

    public PrettyUser getApprovedByUser() {
        return approvedByUser;
    }

    public void setApprovedByUser(PrettyUser approvedByUser) {
        this.approvedByUser = approvedByUser;
    }

    public Integer getApproved() {
        return approved;
    }

    public void setApproved(Integer approved) {
        this.approved = approved;
    }

    public Long getApprovedAt() {
        return approvedAt;
    }

    public void setApprovedAt(Long approvedAt) {
        this.approvedAt = approvedAt;
    }

    public Long getApprovedBy() {
        return approvedBy;
    }

    public void setApprovedBy(Long approvedBy) {
        this.approvedBy = approvedBy;
    }

    public Integer getGiveup() {
        return giveup;
    }

    public void setGiveup(Integer giveup) {
        this.giveup = giveup;
    }

    public Long getGiveupAt() {
        return giveupAt;
    }

    public void setGiveupAt(Long giveupAt) {
        this.giveupAt = giveupAt;
    }

    public Long getGiveupBy() {
        return giveupBy;
    }

    public void setGiveupBy(Long giveupBy) {
        this.giveupBy = giveupBy;
    }

    public Integer getCommitted() {
        return committed;
    }

    public void setCommitted(Integer committed) {
        this.committed = committed;
    }

    public Long getCommittedAt() {
        return committedAt;
    }

    public void setCommittedAt(Long committedAt) {
        this.committedAt = committedAt;
    }

    public Long getCommittedBy() {
        return committedBy;
    }

    public void setCommittedBy(Long committedBy) {
        this.committedBy = committedBy;
    }

    public Integer getHung() {
        return hung;
    }

    public void setHung(Integer hung) {
        this.hung = hung;
    }

    public Long getHungAt() {
        return hungAt;
    }

    public void setHungAt(Long hungAt) {
        this.hungAt = hungAt;
    }

    public Long getHungBy() {
        return hungBy;
    }

    public void setHungBy(Long hungBy) {
        this.hungBy = hungBy;
    }

    public String getHungReason() {
        return hungReason;
    }

    public void setHungReason(String hungReason) {
        this.hungReason = hungReason;
    }
//id, subject,content,`no`,ownerId,status,urgent,priority,task,

    public Integer getStandalone() {
        return standalone;
    }

    public void setStandalone(Integer standalone) {
        this.standalone = standalone;
    }

    public Integer getDependent() {
        return dependent;
    }

    public void setDependent(Integer dependent) {
        this.dependent = dependent;
    }

    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public Integer getNo() {
        return no;
    }

    public void setNo(Integer no) {
        this.no = no;
    }

    public Integer getUrgent() {
        return urgent;
    }

    public void setUrgent(Integer urgent) {
        this.urgent = urgent;
    }

    public Integer getPriority() {
        return priority;
    }

    public void setPriority(Integer priority) {
        this.priority = priority;
    }

    public Integer getTask() {
        return task;
    }

    public void setTask(Integer task) {
        this.task = task;
    }

    public Long getOwnerId() {
        return ownerId;
    }

    public void setOwnerId(Long ownerId) {
        this.ownerId = ownerId;
    }

    public Long getIssueId() {
        return issueId;
    }

    public void setIssueId(Long issueId) {
        this.issueId = issueId;
    }

    public Long getStartAt() {
        return startAt;
    }

    public void setStartAt(Long startAt) {
        this.startAt = startAt;
    }

    public Long getEndAt() {
        return endAt;
    }

    public void setEndAt(Long endAt) {
        this.endAt = endAt;
    }

    public List<TaskLog> getLogList() {
        return logList;
    }

    public void setLogList(List<TaskLog> logList) {
        this.logList = logList;
    }

    public Integer getProgress() {
        return progress;
    }

    public void setProgress(Integer progress) {
        this.progress = progress;
    }

    public String getGiveupReason() {
        return giveupReason;
    }

    public void setGiveupReason(String giveupReason) {
        this.giveupReason = giveupReason;
    }

    public Integer getEstimatedTime() {
        return estimatedTime;
    }

    public void setEstimatedTime(Integer estimatedTime) {
        this.estimatedTime = estimatedTime;
    }

    public Long getEstimatedStartAt() {
        return estimatedStartAt;
    }

    public void setEstimatedStartAt(Long estimatedStartAt) {
        this.estimatedStartAt = estimatedStartAt;
    }

    public Long getEstimatedEndAt() {
        return estimatedEndAt;
    }

    public void setEstimatedEndAt(Long estimatedEndAt) {
        this.estimatedEndAt = estimatedEndAt;
    }

    public Integer getTime() {
        return time;
    }

    public void setTime(Integer time) {
        this.time = time;
    }

    public Long getExpectedFinishTime() {
        return expectedFinishTime;
    }

    public void setExpectedFinishTime(Long expectedFinishTime) {
        this.expectedFinishTime = expectedFinishTime;
    }

    public Boolean getTimeout() {
        return timeout;
    }

    public void setTimeout(Boolean timeout) {
        this.timeout = timeout;
    }

    public Integer getToBeDiscussed() {
        return toBeDiscussed;
    }

    public void setToBeDiscussed(Integer toBeDiscussed) {
        this.toBeDiscussed = toBeDiscussed;
    }

    public Integer getDayRemaining() {
        return dayRemaining;
    }

    public void setDayRemaining(Integer dayRemaining) {
        this.dayRemaining = dayRemaining;
    }

    public Long getPlannedCompletionTime() {
        return plannedCompletionTime;
    }

    public void setPlannedCompletionTime(Long plannedCompletionTime) {
        this.plannedCompletionTime = plannedCompletionTime;
    }

    public Integer getNewDayRemaining() {
        return newDayRemaining;
    }

    public void setNewDayRemaining(Integer newDayRemaining) {
        this.newDayRemaining = newDayRemaining;
    }
}
